ci: Use Cirrus Runners for iOS integration tests#4951
ci: Use Cirrus Runners for iOS integration tests#4951
Conversation
Switch the iOS device tests workflow from GitHub-hosted macOS runners to Cirrus Labs runners. GitHub-hosted runners keep removing older Xcode versions, which breaks CI. Cirrus Labs runners provide stable, pinned Xcode environments. Two separate matrix entries run on dedicated Cirrus images: - net10.0 on ghcr.io/cirruslabs/macos-tahoe-xcode:26.2.0 (Xcode 26.2) - net9.0 on ghcr.io/cirruslabs/macos-tahoe-xcode:26.0.1 (Xcode 26.0) Re-enable net9.0-ios targets in both csproj files (disabled in #4750 pending this fix) and make ios.Tests.ps1 parameterizable via -dotnet_version, consistent with android.Tests.ps1. Fixes GH-4895 Co-Authored-By: Claude <noreply@anthropic.com>
Semver Impact of This PR⚪ None (no version bump detected) 📋 Changelog PreviewThis is how your changes will appear in the changelog. Features ✨
Fixes 🐛
Dependencies ⬆️Deps
Other
🤖 This preview updates automatically when you update the PR. |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #4951 +/- ##
==========================================
- Coverage 73.88% 73.85% -0.03%
==========================================
Files 496 496
Lines 17951 17951
Branches 3516 3516
==========================================
- Hits 13263 13258 -5
- Misses 3826 3828 +2
- Partials 862 865 +3 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
| matrix: | ||
| include: | ||
| - tfm: net10.0 | ||
| runs-on: ["ghcr.io/cirruslabs/macos-tahoe-xcode:26.2.0", "runner_group_id:12"] |
There was a problem hiding this comment.
Looks like these never triggered, I am not sure about the reason.
The tag might be wrong, it should be just 26.2 (see https://github.com/cirruslabs/macos-image-templates/pkgs/container/macos-tahoe-xcode/676398842?tag=26.2)
But I can suggest adding this to ensure they execute in FIFO: https://cirrus-runners.app/setup/#concurrency-groups-fifo-scheduling
Co-authored-by: Itay Brenner <itaybrenner@hotmail.com>
Put net9.0 before net10.0 in the matrix and update the net10.0 Xcode image tag from 26.2.0 to 26.2 to match the available Cirrus image name. Co-Authored-By: Claude <noreply@anthropic.com>
Append runner_concurrency_group=${{ github.run_id }} to the image label
for each matrix entry. This ensures a runner provisioned for a given
workflow run is not claimed by a different run, enabling FIFO scheduling
and avoiding unnecessary queuing when the runner group reaches capacity.
Co-Authored-By: Claude <noreply@anthropic.com>
Cirrus macos-tahoe-xcode images do not have pwsh pre-installed. Install it as a .NET global tool (which is already available from the Setup Environment step) when pwsh is not found on PATH. Co-Authored-By: Claude <noreply@anthropic.com>
After installing PowerShell as a dotnet global tool, append $HOME/.dotnet/tools to $GITHUB_PATH so pwsh is available in all subsequent steps. Co-Authored-By: Claude <noreply@anthropic.com>
Bump the XHarness CLI prerelease version to pick up the latest fixes. Co-Authored-By: Claude <noreply@anthropic.com>
The Cirrus runner image for net9.0 (macos-tahoe-xcode:26.0.1) has Xcode 26.2 selected as the default, even though Xcode 26.0.1 is also installed. The .NET iOS 26.0 SDK requires exactly Xcode 26.0, so the build fails with a version mismatch error. Add an explicit xcode-select step before the build, using a new xcode matrix field to set the correct Xcode path for each TFM. Co-Authored-By: Claude <noreply@anthropic.com>
| } | ||
|
|
||
| [Fact] | ||
| public void This_Test_Should_Fail() |
There was a problem hiding this comment.
todo: remove
I added this to see a test failure in CI ... to double check against a false negative
Co-Authored-By: J-P Nurmi <jp@jpnurmi.dev>
Resolves #4895
Resolves #4950
Depends on #4961
Switch the iOS device tests workflow from GitHub-hosted macOS runners to Cirrus Labs runners. GitHub-hosted runners keep removing older Xcode versions, which breaks CI. Cirrus Labs runners provide stable, pinned Xcode environments.
Two separate matrix entries run on dedicated Cirrus images:
Re-enable net9.0-ios targets in both csproj files (disabled in #4750 pending this fix) and make ios.Tests.ps1 parameterizable via -dotnet_version, consistent with android.Tests.ps1.